<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');
session_start();

class jx_ventasProductos extends CI_Controller {

    private $establecimiento;
    private $inventario;
    Private $resultadoSql;

    public function __construct() {
        parent::__construct();
        $this->load->model('_productoM');
        $this->load->model('_categoria_productoM');
         $this->load->model('monedam');
         $this->load->model('producto_x_ventaM');
         $this->load->model('producto_servicioM');
         $this->load->model('venta_producto_servicioM');
        $this->establecimiento = $_SESSION["establecimiento"]["id_establecimiento"];
    }

    public function index() {
        
    }

   
    //FUncion para obtener los productos de una categoria y despleagarlos en 
    public function getProductosOnCategoria() {
        if (!empty($_POST)) {
            $this->escapar($_POST);
            echo $this->createCombo($_POST['Id_categoria']);
        }
    }

    private function createCombo($Id_categoria) {
        $productos = $this->_productoM->getAllProductos($this->establecimiento, $Id_categoria);
        $options = "<option value='-1'>Todas</option>";
        
        foreach ($productos as $producto) {
            $options.="<option data-valor= {$producto->valor} data-tiene_inventario= '{$producto->tiene_inventario}' data-inventario= '{$producto->cantidad_actual}' value= {$producto->id_servicio} > {$producto->nombre} </option>";
        }
        return $options;
    }

   
  
///////////////////////////// F U N C I O N E S   P A R A   V E N T A S
    public function search() {
        if (!empty($_POST)) {
            $this->escapar($_POST);

            $limit = 10;
            $offset = $_POST['pagina'] * ($limit) - $limit;

                
            $query = "SELECT v.id_venta_servicio, v.fecha, v.total_venta, v.modo_pago, v.impuesto, v.descuento, v.tipo, v.descripcion, c.nombre, c.id_tipo_cliente, c.email, c.identificacion, c.primer_apellido, c.segundo_apellido, 
                c.fecha_nacimiento, c.telefono, c.ocupacion, c.id_documento, c.genero, c.id_estado_civil, c.id_pais, c.direccion, u.usuario, vpro.id_servicio FROM producto_x_venta vpro, cliente c, usuario u, venta_producto_servicio v  
                WHERE v.id_venta_servicio = vpro.id_venta_servicio AND c.id_establecimiento='{$_SESSION['establecimiento']['id_establecimiento']}' AND v.usuario_encargado=u.id_usuario AND v.id_cliente=c.id_cliente AND";
            $query.=(!empty($_POST['tipoB'])) ? " lower(v.tipo) LIKE '" . strtolower($_POST['tipoB']) . "%' AND " : " ";
            $query.=(!empty($_POST['categoriaB'])) ? " v.id_venta_servicio IN (select id_venta_servicio from producto_x_venta where id_servicio IN (select id_servicio FROM producto_servicio where id_categoria_producto = '{$_POST['categoriaB']}' )) AND " : " ";
             $query.=(!empty($_POST['productoB'])) ? "vpro.id_servicio = '{$_POST['productoB']}' AND " : " ";
             $query.=(!empty($_POST['fechaIni'])) ? " date_format(v.fecha,'%d/%m/%Y') >= '{$_POST['fechaIni']}' AND " : " ";
             $query.=(!empty($_POST['fechaFin'])) ? " date_format(v.fecha,'%d/%m/%Y') <= '{$_POST['fechaFin']}' AND " : " ";
            $query.=" TRUE  GROUP BY v.id_venta_servicio, v.fecha, v.total_venta, v.modo_pago, v.impuesto, v.descuento, v.tipo, v.descripcion, c.nombre, c.id_tipo_cliente, c.email, c.identificacion, c.primer_apellido, c.segundo_apellido, 
                c.fecha_nacimiento, c.telefono, c.ocupacion, c.id_documento, c.genero, c.id_estado_civil, c.id_pais, c.direccion, u.usuario ORDER BY v.id_venta_servicio  ";            
            
            $result = $this->venta_producto_servicioM->query($query);
            $n = sizeof($result);
            $query.="LIMIT $limit OFFSET $offset";
            $this->createTableVentas($query, $_POST['pagina'], $n, $limit);
        }
    }

    //funcion encargada de crear la tabla con los resultados arrojados 
    public function createTableVentas($query, $pagina, $nFilas, $limit) {
        $table = "";
        $ventas = $this->venta_producto_servicioM->query($query);
        $moneda= $this->monedam->obtenerMonedaActual($this->establecimiento);
                foreach ($moneda as $monedas) {
                    $simbolo=$monedas->simbolo;
                }
        //  var_dump($productos);
        foreach ($ventas as $venta) {
            $query2 = "SELECT ps.nombre, c.nombre as categoria, ps.valor, pv.cantidad FROM categoria_producto_servicio c, producto_x_venta pv, producto_servicio ps where pv.id_servicio =ps.id_servicio AND pv.id_venta_servicio='$venta->id_venta_servicio'  AND c.id_categoria_producto = ps.id_categoria_producto ";
            $infoProducto2= $this->venta_producto_servicioM->query($query2);
            foreach ($infoProducto2 as $infoProducto) {
                
            
//$infoProducto =$this->searchProductosByIdVenta2($venta->id_venta_servicio);
            $class = "editar-persona";
            $class2="Vermas";
            $table.="<tr>
                                    <td>$venta->fecha</td>
                                    <td>$venta->nombre</td>
                                    <td>$infoProducto->nombre</td>
                                    <td>$infoProducto->cantidad</td>
                                            
                                    <td>$simbolo  $venta->total_venta</td>
                                    <td>$venta->tipo</td>
                                    <td>$venta->usuario</td>
                                    <td>
                                        <a href='#vermasVentaActual2' class='btn btn-mini btn-inverse $class $class2' type='button' data-toggle='modal' 
                                          data-id='{$venta->id_venta_servicio}' data-nombrecliente='{$venta->nombre}' data-tipocliente='{$venta->id_tipo_cliente}'
                                               data-notasventa='{$venta->descripcion}' data-total_venta='{$venta->total_venta}' data-fechventa='{$venta->fecha}' data-descuentofventa='{$venta->descuento}'
                                                     data-usuario='{$venta->usuario}' data-nombrePVendido='{$infoProducto->nombre}' data-cantidadPVendido='{$infoProducto->cantidad}' data-impuestoapli='{$venta->impuesto}'
                                                         data-categoriaPVendido='{$infoProducto->categoria}' data-valPVendido='{$infoProducto->valor}' >Ver mas</a> ";                                                               
                                      if($venta->tipo == "Extra"){
                                          $table.="<a href='#confirmatioDelete' class='btn btn-mini btn-danger eliminar' data-toggle='modal'  data-id_de_venta='{$venta->id_venta_servicio}' ><i class='icon-remove icon-black'></i></a>";
                                      }
                                         
                                    $table.= "</td>
                                </tr>  ";
        }
        }
        echo "$table %%% " . $this->createPagination($nFilas, $pagina, $limit);
    }

    
     /////////////////// Buscar productos de una compra///////////////////////
    public function searchProductosByIdVenta2($idVentaOK) {
        $query = "SELECT ps.nombre, ps.valor, c.nombre as categoria, pv.cantidad FROM categoria_producto_servicio c, producto_x_venta pv, producto_servicio ps where pv.id_servicio =ps.id_servicio AND pv.id_venta_servicio='$idVentaOK'  AND c.id_categoria_producto = ps.id_categoria_producto ";
            return $this->venta_producto_servicioM->query($query);
            //$this->resultadoSql=  $this->venta_producto_servicioM->query($query);
    }

    public function searchProductosByIdVenta() {
        if (!empty($_POST)) {
            $this->escapar($_POST);

            $limit = 5;
            $offset = $_POST['pagina'] * ($limit) - $limit;

            $query = "SELECT ps.nombre, c.nombre as categoria, pv.cantidad FROM categoria_producto_servicio c, producto_x_venta pv, producto_servicio ps where pv.id_servicio =ps.id_servicio AND pv.id_venta_servicio='{$_POST['idVenta']}'  AND c.id_categoria_producto = ps.id_categoria_producto ";
            $result = $this->venta_producto_servicioM->query($query);
            $this->resultadoSql=  $this->venta_producto_servicioM->query($query);
            $n = sizeof($result);
            $query.="LIMIT $limit OFFSET $offset";
            $this->createTableProductos($query, $_POST['pagina'], $n, $limit);
            
        }
    }

    //funcion encargada de crear la tabla con los resultados arrojados 
    public function createTableProductos($query, $pagina, $nFilas, $limit) {
        $table = "";
        $ventas = $this->venta_producto_servicioM->query($query);

        //  var_dump($productos);
        foreach ($ventas as $venta) {

            $table.="<tr>
                <td>$venta->categoria</td>
              <td>$venta->nombre</td>                                                                       
              <td>$venta->cantidad</td>
                  
                                </tr>  ";
        }
        echo "$table %%% " . $this->createPagination($nFilas, $pagina, $limit);
    }

    ///////////////////////////// F U N C I O N E S   C O M U N E S
    public function createPagination($n, $active, $limit) {
        $n = ceil($n / $limit);
        // return $n;
        $pagination = "<ul>";
        for ($i = 1; $i <= $n; $i++) {
            $pagination.="<li ";
            $pagination.=($i == $active) ? " class=active>" : ">";
            $pagination.="<a class='pagination' data-pagina='$i' href='#'>$i</a></li>";
        }
        $pagination .= "</ul>";
        return $pagination;
    }
    
    public function deleteVenta() {
        
        if (!empty($_POST)) {
            $this->escapar($_POST);
            $query = "SELECT pv.id_servicio,  pv.cantidad FROM  producto_x_venta pv where  pv.id_venta_servicio='{$_POST['idVenta']}'  AND pv.id_establecimiento='{$_SESSION['establecimiento']['id_establecimiento']}' ";
            $result = $this->producto_x_ventaM->query($query);
            foreach ($result as $productos) {
                 $this->producto_servicioM->actualizarInventarioPorDevolucion($productos->id_servicio, $productos->cantidad);
            }
           // $establecimientoActual=$_SESSION['establecimiento']['id_establecimiento'];
           $this->venta_producto_servicioM->eliminarVentaPorDevolucion($_POST['idVenta']);
           
        }
        
        }
    
    

}
